// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	2/19/2015 9:37:54 PM				
// -----------------------------

#ifndef _ITexture_h
#define _ITexture_h

#include "Common.h"

namespace Flow
{

	class IGraphicsDevice;

	class ITexture
	{
	public:

		// Release the Texture
		virtual void	Release() = 0;

		// Create the Texture from Data
		virtual Bool	Create(IGraphicsDevice* lpDevice, UInt32 uWidth, UInt32 uHeight, TextureFormat::Enum format, void* lpData) = 0;

		// Update the Texture Data
		virtual void	Update(IGraphicsDevice* lpDevice, UInt32 uSubResource, void* lpData) = 0;

		// Get the Texture Width
		virtual UInt32				GetWidth() const = 0;
		// Get the Texture Height
		virtual UInt32				GetHeight() const = 0;
		// Get the Texture Format
		virtual TextureFormat::Enum	GetFormat() const = 0;
		// Does the texture have data?
		virtual Bool				HasData() const = 0;

	};

}

#endif